import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

// 导入封装好的本地存储函数
import { saveToken, getToken, delToken } from '@/utils/auth'
import { userInfoAPI } from "@/api";


// 实例化 vuex 对象
const store = new Vuex.Store({

    state: {
        // 用来保存token和refresh_token的对象
        tokenObj: getToken() || {},
        userInfo: {},

    },
    mutations: {
        changeToken(state, obj) {

            state.tokenObj = obj
            saveToken(obj)
        },
        changeUserInfo(state, obj) {
            state.userInfo = obj
        },
        logout(state) {
            // 删除state里的token
            state.tokenObj = {},
                // 删除本地存储的token
                delToken(),
                // 删掉保存的用户信息，不然别人换账号登录还是上一个账号的信息
                state.userInfo = {}
        },

    },
    // 使用actions解决直接访问修改页面的问题
    actions: {
        async getUserInfo(context) {
            let res = await userInfoAPI();
            // console.log(res);
            // 请求到了后就把数据存到vuex里
            context.commit("changeUserInfo", res.data.data);
        },

    }
})

// 暴露出去
export default store